package com.yuandian.bpm.bi.modules.user.util;

import lombok.Getter;

import java.util.List;

/**
 * <p>批量校验返回结果封装</p>
 *
 * @author: lishilei
 * @date: 2023-3-15
 */
@Getter
public class BatchDataResult<T> {
    /**
     * 校验结果
     */
    private boolean success = true;

    /**
     * 入库前校验成功结果集
     */
    private List<T> successResult;

    /**
     * 入库前校验失败结果集
     */
    private List<T> failResult;

    /**
     * 设置校验成功与失败结果集
     *
     * @param isSuccess 是否成功
     * @param successList 成功结果集
     * @param failList 失败结果集
     */
    public BatchDataResult(boolean isSuccess, List<T> successList, List<T> failList) {
        success = isSuccess;
        successResult = successList;
        failResult = failList;
    }

    /**
     * 返回校验结果-只设置校验结果与失败或者成功校验结果集
     *
     * @param isSuccess 校验是否成功
     * @param list 当isSuccess=true时, 设置成功结果集, 当isSuccess=false时, 设置失败结果集
     */
    public BatchDataResult(boolean isSuccess, List<T> list) {
        success = isSuccess;
        if (isSuccess) {
            successResult = list;
        }else {
            failResult = list;
        }
    }

    /**
     * 返回校验成功-不设置校验成功与校验失败结果集, 用于不需要入库校验的场景
     *
     * @param isSuccess 是否成功
     */
    public BatchDataResult(boolean isSuccess) {
        success = isSuccess;
    }

    /**
     *
     * 返回校验成功-不设置校验成功与校验失败结果集, 用于不需要入库校验的场景
     *
     * @return
     */
    public static BatchDataResult success() {
        return new BatchDataResult(true);
    }
}
